Amazon Machine LearningのDatasourceまとめ
Amazon Machine Learning(Amazon ML)のDatasourceの作り方は何通りかありますので、まとめてみたいと思います。
Datasourceの比較
概要に書かれているように、Amazon MLサービスはどのDatasourceを利用した場合でも最終的にS3からデータを読み込むようになっています。そのため、RDSやRedshiftを利用した場合でもモデルを作成する際に利用した元データを後で確認することが可能です。
Datasource | S3 | RDS | Redshift |
---|---|---|---|
概要 | S3にアップロードしたCSVファイルを利用する | Data Pipelineを利用してRDSからS3にコピーしたCSVファイルを利用する | RedshiftのunloadコマンドでS3にコピーしたCSVファイルを利用する |
Bucket Policy | 必要(※1) | 不要(※2) | 不要(※2) |
IAM Role | 不要 | 必要 | 必要 |
マネジメントコンソールからの作成 | 可 | 不可 | 可 |
Data Schema(※3) | 不要 | 必要 | 不要 |
備考 | MySQLとAuroraのみ(※4) |
※1: Amazon MLサービスがS3にアクセスするためのBucket Policyが必要になります。なお、マネジメントコンソールから操作する際は操作手順の中で自動的に追加することが可能です。 ※2: IAM PolicyでS3へのアクセス権限を付与するため不要になります。Amazon MLサービスがS3にアクセスすることは変わらないため、IAM PoilcyもしくはBucket Policyのどちらかでアクセス可能にしておく必要があります。 ※3: DatasourceとなるCSVファイルのスキーマ情報です。マネジメントコンソールから作成する際は画面上で設定できますが、AWS CLI(API)経由の場合はスキーマ情報の指定が必須になります。 ※4: 公式ドキュメントではMySQLのみ記述されているため、Auroraについては動作はするようですが保証はされていないようです。
詳細な手順については以下のリンクをご参照下さい。RDSやRedshiftを利用する際は、まずはS3の手順を見てから差分を把握していただければと思います。
- S3: 【新サービス】Amazon Machine Learningを試してみた
- RDS for MySQL: RDS for MySQLでAmazon Machine LearningのDatasourceを作ってみた
- RDS for Aurora: Amazon AuroraでAmazon Machine LearningのDatasourceを作ってみた
- Redshift:Amazon RedshiftでAmazon Machine LearningのDatasourceを作ってみた
まとめ
Amazon MLサービスがDatasourceを作成することになるため、サービスの権限周りの準備が必要になる点は理解しにくい点なのかなと思います(私も最初戸惑いました)。あとData Schemaファイルの作成が面倒なので、Redshiftを利用している場合はまずはマネジメントコンソールで作成するというのが手軽かと思います。バッチ化する際に作成済みのDatasourceからAPI経由でData Schemaを取得できます。そういう意味で、RDSについてもマネジメントコンソールに対応してくれるようになるといいなと思います。